package me.zhengjie.modules.system.service.mapstruct.convertor;

/**
 * SerialNoConvertor
 *
 * @author guoyuan
 * @version 1.0.0
 * @since 1.0.0
 */
public interface SerialNoConvertor {

    /**
     * 数字序号转字符串编号
     *
     * @param serialNo      数字序号
     * @param prefix        数字序号前拼前缀
     * @param zeroLen       数字序号前补充0个数
     * @param firstSerialNo 最大数字序号
     * @return 字符串编号
     */
    default String buildSerialNo(Integer serialNo, String prefix, Integer zeroLen, Integer firstSerialNo) {
        String strSystemId;
        final int targetLen = String.valueOf(firstSerialNo).length();
        final int sourceLen = String.valueOf(serialNo).length();
        int len = targetLen - sourceLen;
        if (zeroLen != null) {
            len += zeroLen;
        }
        if (len == 0) {
            strSystemId = prefix + serialNo;
        } else {
            String format = "%0" + len + "d";
            strSystemId = prefix + String.format(format, serialNo);
        }
        return strSystemId;
    }
}
